#ifndef COMMUN_H
#define COMMUN_H

#include <list>
#include <utility>
#include <string>
#include <map>

/**
 * Type utilisé pour représenter les différentes cardinalités possibles
 */
typedef enum
{
	CARD_PLUS, CARD_QMARK, CARD_STAR, CARD_NONE
} Tcardinality;

/**
 * Type utilisé pour représenter les différents types de jointures possibles
 */
typedef enum
{
	TYPE_PIPE, TYPE_COMMA, TYPE_NONE
} type;

typedef std::list< std::pair< std::string, std::string > > AttList;
typedef std::pair< std::string, std::string > ElementName;

/**
 * Récupère le type cardinalité depuis le symbole associé (+, *, ?)
 */
Tcardinality getCardinalityFromString(std::string s);

/**
 * Récupère le symbole associé à une cardinalité depuis un élèment de Tcardinality
 */
std::string getStringFromCardinality(Tcardinality card);

/**
 * Récupère le type à partir d'un symbole ("|", ",")
 */
type getTypeFromString(std::string s);

/**
 * Récupère le symbole à partir du type
 */
std::string getStringFromType(type t);

#ifdef DEBUG
#define debug(x) (x)
#else
#define debug(x) ((void) 0)
#endif


#endif
